草庐IT

c++ - 将类型解析为 class::typedef 的更短方法

全部标签

ruby - 基于 OOP 的文本游戏中的优雅命令解析

我正在玩用Ruby编写MUD/文本冒险(请不要笑)。谁能给我任何关于解析输入文本的优雅的、基于oop的解决方案的建议?我们在这里谈论的只是“把魔杖放在table上”更复杂的事情。但是一切都需要柔软;我想稍后轻松地扩展命令集。我目前的想法,稍微简化一下:每个项目类别(盒子、table、房间、播放器)都知道如何识别“属于”它的命令。游戏类理解一种特定于领域的语言,涉及诸如“将对象X移入对象Y”、“显示对象X的描述”等Action。游戏类询问房间中的每个项目是否识别输入命令。先说是赢。然后它将控制传递给项目类中处理命令的方法。此方法重新表述DSL中的命令,将其传递回游戏对象以实现它。必须有一

ruby-on-rails - 重命名 Rails Controller 的简单方法

这个问题在这里已经有了答案:Howtorenamerailscontrollerandmodelinaproject(8个答案)关闭7年前。有重命名Controller的简单方法吗?我知道的唯一方法是手动完成或生成一个新的Controller,将代码移至旧Controller并销毁旧Controller。似乎必须有一种编程方式来执行此操作。

ruby - 使用 Ruby 解析标签中有冒号的 RSS 项?

我正在尝试从具有此标记结构的RSS提要中解析信息:foobar使用内置的RubyRSS库。显然,执行item.dc:subject会引发错误,但我想不出任何方法来提取该信息。有什么办法可以让它工作吗?或者是否可以使用不同的RSS库? 最佳答案 带有“:”的标签实际上是带有命名空间的XML标签。我使用RSS模块从来没有取得过好的结果,因为提要格式通常不符合规范,导致模块放弃。我强烈推荐使用Nokogiri来解析提要,无论是RDF、RSS还是ATOM。Nokogiri能够使用XPath访问器或CSS访问器,并且都支持命名空间。最后两行是

c - 为什么此代码不适用于 ruby​​ 1.9 但适用于 ruby​​ 1.8?

我从ruby​​website下载了最新稳定的ruby​​源代码(1.9.2-p180)并使用MinGW4.5.2-TDM和MSYS在Windows上编译它。为了编译,我运行了shconfigure和make。我完全按照预期获得了msvcrt-ruby191.dll和libmsvcrt-ruby191.dll.a。然后我写了这段代码:#includeintmain(){ruby_init();rb_funcall2(Qnil,rb_intern("p"),1,(VALUE[]){INT2FIX(0)});ruby_finalize();}我用g++编译,链接到ruby​​的dll。当我

c - Data_wrap_struct 和标记函数

我正在编写一个Ruby扩展,我正在使用函数Data_wrap_struct。为了参与Ruby的标记和清除垃圾收集过程,我需要定义一个例程来释放我的结构,以及一个例程来标记从我的结构到其他结构的任何引用。我通过经典的free函数来释放内存,但我不知道如何使用标记函数。我的结构听起来像这样typedefstruct{intx;inty;}A;typedefstruct{Acollection[10];intcurrent;}B;我认为我需要一个标记函数来标记结构B的collection中的引用。谁能给我看一个例子,看看标记函数是如何工作的? 最佳答案

ruby-on-rails - AASM 不适用于我的 rails 3 和 ruby​​ 1.8.7(未定义方法 `name' 为 nil :NilClass )

我正在使用Rails3.2.2,带有aasmgem,我有这样的Document模型:classDocumenttruestate:readstate:closedevent:viewdotransitions:to=>:read,:from=>[:unread]endevent:closedotransitions:to=>:closed,:from=>[:read,:unread]endend现在在我的控制台上:➜✗bundleexecrailscLoadingdevelopmentenvironment(Rails3.2.2)irb(main):006:0>Document.cre

ruby - 解析 100mb JSON 负载的有效方法

我每12小时在我的亚马逊EC2微型实例上运行一次cron作业。它下载118MB的文件并使用json库解析它。这当然会使实例内存不足。我的实例有416MB的可用内存,但随后我运行脚本,它下降到6MB,然后被操作系统杀死。我想知道我在这里有什么选择?是否可以通过Ruby有效地解析它,或者我是否必须下降到像C这样的低级东西?我可以获得一个功能更强大的亚马逊实例,但我真的很想知道是否可以通过Ruby做到这一点。更新:我看过yajl。它可以在解析时为您提供json对象,但问题是,如果您的JSON文件仅包含1个根对象,那么它将被迫解析所有文件。我的JSON看起来像这样:--Root-Obj1-Ob

c - C 扩展中的 Ruby 关键字参数

如何处理来自C扩展的Ruby2.0.0关键字参数?背景defexample(name:'Bob'hat_color:'red')puts"#{name}hasa#{hat_color}hat!"endexample#=>"Bobhasaredhat!"example(name:'Joe',hat_color:'blue')#=>"Joehasabluehat!"关键字参数(如上)在处理具有许多不同调用序列或选项的方法时非常有用。我在C扩展中有一个这样的方法(一种处理我项目中大部分OpenGL绘图的blit方法),我想知道如何让该方法处理来自ruby​​的关键字参数。想法根据我所做的一些

c - Ruby 的 Enumerable#zip 是否在内部创建数组?

在Ruby-ComparetwoEnumeratorselegantly,据说Theproblemwithzipisthatitcreatesarraysinternally,nomatterwhatEnumerableyoupass.There'sanotherproblemwithlengthofinputparams我查看了YARV中Enumerable#zip的实现,并看到了staticVALUEenum_zip(intargc,VALUE*argv,VALUEobj){inti;IDconv;NODE*memo;VALUEresult=Qnil;VALUEargs=rb_ar

ruby-on-rails - 如何在 Rails 之外使用 Rails 日期辅助方法?

我正在将一些RailsController代码转换为通用Ruby代码。我遇到了这个:expiration_date=1.hours.from_now.utc.strftime('%Y-%m-%dT%H:%M:%S.000Z')...并意识到这不是标准的Ruby。我收到此错误消息:undefinedmethod`hours'for1:Fixnum(NoMethodError)我如何将其转换为标准Ruby,或者需要/包含必要的库才能使其正常工作?解决方案:要求ActiveSupportNumericclassextensions:require'rubygems'require'activ